/*
在Linux系统中，当一个父进程通过fork系统调用创建子进程时，
子进程会获得父进程的一个拷贝。这种拷贝遵循“写时拷贝”的原则。
这意味着在创建子进程时，==父进程和子进程最初共享相同的内存空间，
直到其中一个进程试图修改内存内容时，才会进行实际的内存拷贝.==
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main(int argc,char const *argv[])
{
    int num=1234;
    pid_t pid=0;
    if(-1 == (pid=fork()))
    {
        puts("创建失败");
        return -1;
    }
    else if(0==pid)
    {
        printf("我是子进程..\n");
        printf("子进程 num=%d\n",num);
        num=80;//写实拷贝 映射到不同的内存空间
        sleep(2);
        printf("子进程 num = %d\n",num);
    }
    else if(pid>0)
    {
        printf("我是父进程..\n");
        printf("父进程 num = %d\n",num);
        sleep(1);
        printf("父进程 num = %d\n",num);
    }
    puts("结束");
}